﻿Public Class Aeropuertos

    Private oMaestra As New CMaestras
    Private idAeropuerto As Integer

    Private Sub Aeropuertos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.CargarGrilla()
        Me.CargarPaises()
        Me.drpCiudad.Items.Add("Seleccione un país")
        Me.drpCiudad.SelectedIndex = 0
    End Sub

    Private Sub CargarGrilla()
        Try
            Dim ds As New DataSet
            ds = Me.oMaestra.GetTabla(CMaestras.Tabla.Aeropuerto)
            'Llena grilla de las monedas
            If (ds.Tables(0).Rows.Count > 0) Then
                Me.grdAeropuerto.DataSource = Nothing
                Me.grdAeropuerto.Columns.Clear()
                Me.grdAeropuerto.DataSource = ds.Tables(0)

                Dim iconoEditar As New DataGridViewImageColumn()
                iconoEditar.ValuesAreIcons = False
                iconoEditar.Image = My.Resources.editar
                iconoEditar.HeaderText = "EDITAR"
                iconoEditar.Name = "EDITAR"
                Me.grdAeropuerto.Columns.Add(iconoEditar)

                Dim iconoEliminar As New DataGridViewImageColumn()
                iconoEliminar.ValuesAreIcons = False
                iconoEliminar.Image = My.Resources.eliminar
                iconoEliminar.HeaderText = "ELIMINAR"
                iconoEliminar.Name = "ELIMINAR"
                Me.grdAeropuerto.Columns.Add(iconoEliminar)

                Me.grdAeropuerto.Columns("ID").Visible = False
                Me.grdAeropuerto.Columns("IDCIUDAD").Visible = False
                Me.grdAeropuerto.Columns("IDPAIS").Visible = False
                Me.grdAeropuerto.Columns("EDITAR").Width = 60
                Me.grdAeropuerto.Columns("ELIMINAR").Width = 70
            Else
                Me.grdAeropuerto.DataSource = Nothing
                Me.grdAeropuerto.Columns.Clear()
                MessageBox.Show("No existen aeropuertos", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If

        Catch ex As Exception
            MessageBox.Show("Ocurrió un error al cargar los aeropuertos: " & ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End Try
    End Sub

    Private Sub CargarPaises()
        Dim ds As New DataSet
        ds = Me.oMaestra.GetCiudades()

        'Llena grilla de los paises
        If (ds.Tables(1).Rows.Count > 0) Then
            Me.drpPais.DataSource = Nothing
            Me.drpPais.Items.Clear()

            Me.drpPais.DataSource = CUtil.AgregarRegistro(ds.Tables(1), "Seleccione...")
            Me.drpPais.ValueMember = ds.Tables(1).Columns(0).ColumnName
            Me.drpPais.DisplayMember = ds.Tables(1).Columns(1).ColumnName
        Else
            Me.drpPais.DataSource = Nothing
            Me.drpPais.Items.Clear()
            MessageBox.Show("No existen países", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If

    End Sub

    Private Sub CargarCiudades()
        'Trae las ciudades que pertenecen al pais seleccionado
        Try
            Me.drpCiudad.DataSource = Nothing
            Me.drpCiudad.Items.Clear()

            'Trae las ciudades del pais
            Dim ds As New DataSet
            ds = oMaestra.GetCiudadesByPais(CInt(Me.drpPais.SelectedValue))
            If (ds.Tables(0).Rows.Count > 0) Then
                Me.drpCiudad.DataSource = CUtil.AgregarRegistro(ds.Tables(0), "Seleccione...")
                Me.drpCiudad.ValueMember = ds.Tables(0).Columns(0).ColumnName
                Me.drpCiudad.DisplayMember = ds.Tables(0).Columns(1).ColumnName
            Else
                Dim dt As New DataTable
                dt.Columns.Add("ID")
                dt.Columns.Add("CIUDAD")
                Dim arrValues(1) As String
                arrValues(0) = "0"
                arrValues(1) = "Este país no tiene ciudades asociadas"
                dt.Rows.Add(arrValues)

                Me.drpCiudad.DataSource = dt
                Me.drpCiudad.ValueMember = dt.Columns(0).ColumnName
                Me.drpCiudad.DisplayMember = dt.Columns(1).ColumnName
            End If
        Catch ex As Exception
            MessageBox.Show("Ocurrió un error al cargar las ciudades: " & ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End Try
    End Sub

    Private Sub EliminarAeropuerto(ByVal id As Integer)
        Try
            If (MessageBox.Show("¿Realmente desea eliminar este aeropuerto?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes) Then
                Cursor = Cursors.WaitCursor
                Me.oMaestra.Eliminar(id, CMaestras.Tabla.Aeropuerto)
                MessageBox.Show("El aeropuerto ha sido eliminada", "Aeropuerto eliminado", MessageBoxButtons.OK, MessageBoxIcon.Information)

                Cursor = Cursors.Default
            End If
        Catch ex As Exception
            Cursor = Cursors.Default
            MessageBox.Show("NO se eliminó el aeropuerto: " & ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End Try
        Me.CargarGrilla()
    End Sub

    Private Function ValidarAeropuerto() As Boolean
        Dim mensaje As String = ""

        If (Trim(Me.txtAeropuerto.Text).Length = 0) Then
            mensaje += "- Debe escribir el aeropuerto" & Chr(13)
        End If
        If (CInt(Me.drpPais.SelectedValue) = 0) Then
            mensaje += "- Debe seleccionar el país" & Chr(13)
        End If
        If (Me.drpCiudad.SelectedValue = Nothing) Then
            mensaje += "- Debe seleccionar la ciudad" & Chr(13)
        Else
            If (Me.drpCiudad.SelectedValue.ToString() = "0") Then
                mensaje += "- Debe seleccionar la ciudad" & Chr(13)
            End If
        End If

        If (mensaje.Length > 0) Then
            MessageBox.Show(mensaje, "Datos incompletos", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Return False
        Else
            Return True
        End If
    End Function


    Private Sub drpPais_SelectionChangeCommitted(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles drpPais.SelectionChangeCommitted
        Me.CargarCiudades()
    End Sub

    Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
        Me.idAeropuerto = 0
        Me.txtAeropuerto.Text = ""
        If (Me.drpPais.Items.Count = 0) Then
            Me.drpPais.Items.Add("No hay registros")
        End If
        Me.drpPais.SelectedIndex = 0
        Me.drpCiudad.DataSource = Nothing
        Me.drpCiudad.Items.Clear()
        Me.drpCiudad.Items.Add("Seleccione un país")
        Me.drpCiudad.SelectedIndex = 0
    End Sub

    Private Sub btnListo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnListo.Click
        If (Me.ValidarAeropuerto()) Then
            Try
                Cursor = Cursors.WaitCursor

                Dim result As String = Me.oMaestra.ActualizarAeropuerto(Me.idAeropuerto, Me.txtAeropuerto.Text, CInt(Me.drpCiudad.SelectedValue))
                Cursor = Cursors.Default

                MessageBox.Show(result, "Aeropuerto", MessageBoxButtons.OK, MessageBoxIcon.Information)

                If (My.Forms.Guias.Visible) Then
                    My.Forms.Guias.CargarAeropuertos()
                End If

            Catch ex As Exception
                Cursor = Cursors.Default
                MessageBox.Show("Ocurrió un error al guardar el aeropuerto: " & ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            End Try

            Me.idAeropuerto = 0
            Me.txtAeropuerto.Text = ""
            Me.CargarGrilla()
        End If
    End Sub

    Private Sub grdAeropuerto_CellMouseEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grdAeropuerto.CellMouseEnter
        '*** Coloca la manito cuando el mouse entra en las celdas de EDITAR y ELIMINAR
        If (Me.grdAeropuerto.Columns(e.ColumnIndex).Name = "ELIMINAR" Or Me.grdAeropuerto.Columns(e.ColumnIndex).Name = "EDITAR") Then
            Cursor = Cursors.Hand
        Else
            Cursor = Cursors.Default
        End If
    End Sub

    Private Sub grdAeropuerto_CellMouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles grdAeropuerto.CellMouseMove
        If (Me.grdAeropuerto.Columns(e.ColumnIndex).Name = "ELIMINAR" Or Me.grdAeropuerto.Columns(e.ColumnIndex).Name = "EDITAR") Then
            Cursor = Cursors.Hand
        Else
            Cursor = Cursors.Default
        End If
    End Sub

    Private Sub grdAeropuerto_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grdAeropuerto.CellDoubleClick
        '*** Permite EDITAR o ELIMINAR
        'Se obtiene la info del registro
        Dim id As Integer = Me.grdAeropuerto.Rows(e.RowIndex).Cells("ID").Value
        Dim aeropuerto As String = Me.grdAeropuerto.Rows(e.RowIndex).Cells("AEROPUERTO").Value
        Dim pais As Integer = Me.grdAeropuerto.Rows(e.RowIndex).Cells("IDPAIS").Value
        Dim ciudad As Integer = Me.grdAeropuerto.Rows(e.RowIndex).Cells("IDCIUDAD").Value

        Select Case Me.grdAeropuerto.Columns(e.ColumnIndex).Name
            Case "EDITAR"
                Me.idAeropuerto = id
                Me.txtAeropuerto.Text = aeropuerto                
                Me.drpPais.SelectedValue = pais
                Me.CargarCiudades()
                Me.drpCiudad.SelectedValue = ciudad
            Case "ELIMINAR"
                Me.EliminarAeropuerto(id)
        End Select
    End Sub
End Class